package org.ch02.test00.demo01;

import org.ch02.entity.Student;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * 二、通过反射获取类的构造方法，如下所示：
 * public Student(String name,int age,Double weight)
 *
 * 使用反射实例化此类的对象，调用 show 方法，
 * show 方法把构造方法的四个信息打印输出。
 * @author CSY
 * @date 2025 - 03 - 17
 */
public class MainTest {
    public static void main(String[] args) throws Exception {
        //获取某个类的Class对象
        Class<?> clazz = Class.forName("org.ch02.entity.Student");

        //获取构造方法对象
        Constructor<?> constructor = clazz.getConstructor(String.class,int.class,Double.class);

        //实例化
        Object zs = constructor.newInstance("zs", 20, 180d);

        //获取方法对象 - 根据class
        Method method = clazz.getMethod("show");

        method.invoke(zs);
    }
}
